//
// Created by HP on 2024/4/14.
//

#ifndef AURORA_ST_COMMON_FOC_UI_DEFINE_H
#define AURORA_ST_COMMON_FOC_UI_DEFINE_H
#ifdef __cplusplus
extern "C" {
#endif

#include "main.h"
#include "common_thread_define.h"

//-------------------UI发送FOC ------------------------

typedef enum Aurora_UI_WAVE_TYPE{
    NONE = 0,
    LFOC_TaTbTc,
    LFOC_IaIbIc,
    LFOC_IqId,
    RFOC_TaTbTc,
    RFOC_IaIbIc,
    RFOC_IqId
}Aurora_UI_WAVE_TYPE;


typedef enum Aurora_UI2FOC_MODE{
    Calibration_MOTOR,
    HALT_MOTOR,
    OPEN_LOOP_MOTOR,
    I_LOOP_MOTOR,
    SPEED_LOOP_MOTOR,
    POSITION_LOOP_MOTOR
}Aurora_UI_FOC_MODE;


// UI 向 FOC 发送 操作类型
typedef enum Aurora_UI2FOC_TYPE{
    enable_wave = 0,            //使能波形发送
    enable_mode_Lmotor,          //使能电机模式
    enable_mode_Rmotor,          //使能电机模式
    enable_mode_LRmotor,         //使能电机模式
}Aurora_UI2FOC_TYPE;

//用于UI发送FOC 信息
struct Aurora_UI2FOC_MSG{
    Aurora_CMD    cmd;              //命令还是数据
    Aurora_UI2FOC_TYPE type;        //操作类型
    Aurora_UI_WAVE_TYPE wave_type;  //波形数据类型
    Aurora_UI_FOC_MODE  foc_mode;   //电机模式
};
//-------------------    ------------------------



//-------------------FOC发送UI ------------------------


// FOC 向 UI 发送 操作类型
typedef enum Aurora_FOC2UI_TYPE{
    update_wave = 0,
}Aurora_FOC2UI_TYPE;

typedef struct Aurora_FOC2UI_Wave{
    float wave_value_max; //数值的最大值
    float wave_value_min; //数值的最小值
    float    wave1_value;    //波形1数值
    float    wave2_value;    //波形2数值
    float    wave3_value;    //波形3数值
}Aurora_FOC2UI_Wave;

//用于FOC发送UI 信息
struct Aurora_FOC2UI_MSG{
    Aurora_CMD    cmd;         //命令还是数据
    Aurora_FOC2UI_TYPE type;   //操作类型
    Aurora_FOC2UI_Wave wave_data;  //波形更新数据
};

//-------------------------------------------


#ifdef __cplusplus
}
#endif //AURORA_ST_COMMON_FOC_UI_DEFINE_H
#endif